/**
 * 用户相关API
 * @description 用户信息管理、设置等接口
 */

import { get, post, put } from '@/utils/modules/request'

/**
 *  获取策略分类
 * @returns {Promise} 策略分类
 */
export const getStrategyType = () => get('/strategy/getStrategyType')
/**
 *  获取进行中策略
 * @param {Object} data - 查询参数 { pageSize, pageNo, strategyId, currencyId, periodId, startTime, endTime, search }
 * @returns {Promise} 进行中策略.   
 */
export const getProcessingStrategy = (data) => get('/strategy/getProcessingStrategy', { data })
/**
 *  获取策略历史
 * @returns {Promise} 策略历史
 */
export const getStrategyHistories = (data) => get('/strategy/getStrategyHistoriesNew', { data })
/**
 *  获取策略所需积分
 * @returns {Promise} 查询策略所需积分
 */
export const getStrategyPoints = () => get('/strategy/getStrategyPoints')
/**
 *  获取用户已订阅的策略权限
 * @returns {Promise} 查询策略所需积分
 */
export const myPermissions = () => get('/strategy/myPermissions')
/**
 *  订阅策略
 * @returns {Promise} 订阅策略
 */
export const subscribe = (data) => post('/strategy/subscribe', data)
/**
 *  设置或者更新策略推送
 * @param {Object} data - { strategyId: number, currencyIds: array, periodIds: array }
 * @returns {Promise} 设置策略推送
 */
export const setStrategyPush = (data) => post('/strategy/setStrategyPush', data)
/**
 *  取消策略推送
 * @param {Object} data - { strategyId: number } 策略ID
 * @returns {Promise} 取消策略推送
 */
export const cancelStrategyPush = (data) => post('/strategy/cancelStrategyPush', data)
/**
 *  获取币种列表
 * @returns {Promise} 订阅策略 
 */
export const getCurrencies = (data) => get('/strategy/getCurrencies', {data})
/**
 *  获取策略详情接口
 * @returns {Promise} 订阅策略
 */
export const getStrategyDetail = (data) => get('/strategy/getStrategyDetail', {data})

/**
 *  获取周期类型列表
 * @returns {Promise} 订阅策略
 */
export const getPeriods = (data) => get('/strategy/getPeriods', {data})
/**
 *  获取币种价格
 * @returns {Promise} 订阅策略
 */
export const getCurrencyPrice = (data) => get('/strategy/getCurrencyPrice', {data})

/**
 *  获取热门山寨币列表
 * @param {Object} data - 查询参数 { pageSize, pageNo, startTime, endTime, search }
 * @returns {Promise} 热门山寨币列表
 * @description 返回的数据包含：
 *  - id: 货币ID
 *  - currencyCode: 币种代码（如BTC、ETH等）
 *  - currencyName: 币种名称（如比特币、以太坊等）
 *  - description: 币种描述
 *  - logoUrl: 币种图标URL
 */
export const getHotSzCurrencies = (data) => get('/strategy/getHotSzCurrencies', {data})

/**
 *  设置策略推送类型（短信/邮箱）
 * @param {Object} data - 推送类型设置数据
 * @param {string} data.type - 推送类型：'sms'（短信）或 'email'（邮箱）
 * @param {boolean} data.enable - 是否启用：true（启用）或 false（禁用）
 * @returns {Promise} 设置结果
 */
export const setStrategyPushType = (data) => post('/strategy/setStrategyPushType', data)

/**
 *  获取策略推送类型配置
 * @returns {Promise} 推送类型配置
 * @description 返回的数据结构：
 * {
 *   code: 200,
 *   message: "操作成功",
 *   data: {
 *     strategySmsPush: boolean,   // 策略短信推送
 *     strategyEmailPush: boolean, // 策略邮箱推送
 *   },
 *   timestamp: 时间戳
 * }
 */
export const getStrategyPushType = () => get('/strategy/getUserPushConfig')

/**
 *  获取用户策略推送配置
 * @returns {Promise} 用户策略推送配置列表
 * @description 返回的数据结构：
 * {
 *   code: 200,
 *   message: "操作成功",
 *   data: [
 *     {
 *       strategyId: number,      // 策略ID
 *       strategyName: string,    // 策略名称
 *       currencies: [{ currencyId, currencyName }],  // 推送币种
 *       periods: [{ periodId, periodName }],         // 推送周期
 *       bindTime: string,        // 首次绑定时间
 *       updateTime: string       // 最后更新时间
 *     }
 *   ],
 *   timestamp: 时间戳
 * }
 */
export const getUserStrategyPushSetting = () => get('/strategy/getUserStrategyPushSetting')
